package com.ricchieri.service.interf;

import java.util.List;
import java.util.Map;

import org.springframework.transaction.annotation.Transactional;

import com.ricchieri.filter.ReservationFilter;
import com.ricchieri.model.Reservation;
import com.ricchieri.model.ScheduleCharter;

public interface IReservationService {
	@Transactional(readOnly = true)
	public List<Reservation> getAllReservation();

	public void addReservation(Reservation reservation);
	
	public int getAllReservationCountByFilter(ReservationFilter reservationFilter);

	public Reservation getReservationById(ReservationFilter reservationFilter);

	public List<Reservation> getAllReservationPaginatedByFilter(
			ReservationFilter reservationFilter, int startRecord);

	public void updateReservation(Reservation reservation, Boolean sendMail);

	public void sendNotification(ScheduleCharter scheduleCharter, String message);

	public String replaceTextEmailWithVariables(Reservation reservation, String message);

	public List<Object[]> getCountReservationByOperator(ReservationFilter filter);

	public Map<String, String> getReservationStateCombo();

	public void addReservationWithoutEmail(Reservation reservation);

	public List<Reservation> getAllReservationByFilter(
			ReservationFilter reservationFilter);
}
